/**
 * 
 */
package edu.gtcfla.km.admin.appmodules.service;

import java.util.Set;

import org.vsg.biz.BusinessOperationException;

import edu.gtcfla.km.admin.appmodules.vo.HierarchyMenuItem;
import edu.gtcfla.km.admin.appmodules.vo.HierarchyMenuResourcePermissionVO;
import edu.gtcfla.km.admin.appmodules.vo.MenuFormView;
import edu.gtcfla.km.admin.appmodules.vo.MenuWithMethodVO;

/**
 * @author Bill vison 
 *
 */
public interface MenuManagerService {
	
	/**
	 * build the Hiberachy structure
	 * @return
	 * @throws BusinessOperationException
	 */
	Set<HierarchyMenuItem> buildHierachyMenuResourceView() throws BusinessOperationException;
	
	/**
	 * build the Hiberachy structure
	 * @return
	 * @throws BusinessOperationException
	 */
	Set<HierarchyMenuItem> selAllMenuTreeNode() throws BusinessOperationException;
	
	
	
	public void authMenusWithUnderRes(String roleId , Set<HierarchyMenuResourcePermissionVO> perms ) throws BusinessOperationException;
	
	
	
	void saveNewMenuFromView(MenuFormView view) throws BusinessOperationException;
	
	
	
	void mergeAllMenuMethod(Set<MenuWithMethodVO> menuMethodSet) throws BusinessOperationException;
	
	
	Set<HierarchyMenuResourcePermissionVO> buildHierachyMenuPermissionByRoleId(String roleId) throws BusinessOperationException;
	
	
	/**
	 * show the menu tree for in function
	 * @param functionId
	 * @return
	 * @throws BusinessOperationException
	 */
	public Set<HierarchyMenuItem> getMenuTreeInFunction(String functionId) throws BusinessOperationException;
	
}
